---
title: LangGraph Server changelog
sidebarTitle: Server changelog
---

[LangGraph Server](/langgraph-platform/langgraph-server) is an API platform for creating and managing agent-based applications. It provides built-in persistence, a task queue, and supports deploying, configuring, and running assistants (agentic workflows) at scale. This changelog documents all notable updates, features, and fixes to LangGraph Server releases.

<a id="2025-09-19"></a>
## v0.4.22
- Ported long-stream handling to the run stream, join, and cancel endpoints for improved stream management.

<a id="2025-09-18"></a>
## v0.4.21
- Added A2A streaming functionality and enhanced testing with the A2A SDK.
- Added Prometheus metrics to track language usage in graphs, middleware, and authentication for improved insights.
- Fixed bugs in Open Source Software related to message conversion for chunks.
- Removed await from pubsub subscribes to reduce flakiness in cluster tests and added retries in the shutdown suite to enhance API stability.

<a id="2025-09-11"></a>
## v0.4.20
- Optimized Pubsub initialization to prevent overhead and address subscription timing issues, ensuring smoother run execution.

<a id="2025-09-11"></a>
## v0.4.19
- Removed warnings from psycopg by addressing function checks introduced in version 3.2.10.

<a id="2025-09-11"></a>
## v0.4.17
- Filtered out logs with mount prefix to reduce noise in logging output.

<a id="2025-09-10"></a>
## v0.4.16
- Added support for implicit thread creation in a2a to streamline operations.
- Improved error serialization and emission in distributed runtime streams, enabling more comprehensive testing.

<a id="2025-09-09"></a>
## v0.4.13
- Monitored queue status in the health endpoint to ensure correct behavior when PostgreSQL fails to initialize.
- Addressed an issue with unequal swept ID lengths to improve log clarity.
- Enhanced streaming outputs by avoiding re-serialization of DR payloads, using msgpack byte inspection for json-like parsing.

<a id="2025-09-04"></a>
## v0.4.12
- Ensured metrics are returned even when experiencing database connection issues.
- Optimized update streams to prevent unnecessary data transmission.
- Upgraded `hono` from version 4.9.2 to 4.9.6 in the `storage_postgres/langgraph-api-server` for improved URL path parsing security.
- Added retries and an in-memory cache for LangSmith access calls to improve resilience against single failures.

<a id="2025-09-04"></a>
## v0.4.11
- Added support for TTL (time-to-live) in thread updates.

<a id="2025-09-04"></a>
## v0.4.10
- In distributed runtime, update serde logic for final checkpoint -> thread setting.

<a id="2025-09-02"></a>
## v0.4.9
- Added support for filtering search results by IDs in the search endpoint for more precise queries.
- Included configurable headers for assistant endpoints to enhance request customization.
- Implemented a simple A2A endpoint with support for agent card retrieval, task creation, and task management.

<a id="2025-08-30"></a>
## v0.4.7
- Stopped the inclusion of x-api-key to enhance security.

<a id="2025-08-29"></a>
## v0.4.6
- Fixed a race condition when joining streams, preventing duplicate start events.

<a id="2025-08-29"></a>
## v0.4.5
- Ensured the checkpointer starts and stops correctly before and after the queue to improve shutdown and startup efficiency.
- Resolved an issue where workers were being prematurely cancelled when the queue was cancelled.
- Prevented queue termination by adding a fallback for cases when Redis fails to wake a worker.

<a id="2025-08-28"></a>
## v0.4.4
- Set the custom auth thread_id to None for stateless runs to prevent conflicts.
- Improved Redis signaling in the Go runtime by adding a wakeup worker and Redis lock implementation, and updated sweep logic.

<a id="2025-08-27"></a>
## v0.4.3
- Added stream mode to thread stream for improved data processing.
- Added a durability parameter to runs for improved data persistence.

<a id="2025-08-27"></a>
## v0.4.2
- Ensured pubsub is initialized before creating a run to prevent errors from missing messages.

<a id="2025-08-25"></a>
## v0.4.0
- Emitted attempt messages correctly within the thread stream.
- Reduced cluster conflicts by using only the thread ID for hashing in cluster mapping, prioritizing efficiency with stream_thread_cache.
- Introduced a stream endpoint for threads to track all outputs across sequentially executed runs.
- Made the filter query builder in PostgreSQL more robust against malformed expressions and improved validation to prevent potential security risks.

<a id="2025-08-25"></a>
## v0.3.4
- Added custom Prometheus metrics for Redis/PG connection pools and switched the queue server to Uvicorn/Starlette for improved monitoring.
- Restored Wolfi image build by correcting shell command formatting and added a Makefile target for testing with nginx.

<a id="2025-08-22"></a>
## v0.3.3
- Added timeouts to specific Redis calls to prevent workers from being left active.
- Updated the Golang runtime and added pytest skips for unsupported functionalities, including initial support for passing store to node and message streaming.
- Introduced a reverse proxy setup for serving combined Python and Node.js graphs, with nginx handling server routing, to facilitate a Postgres/Redis backend for the Node.js API server.

<a id="2025-08-21"></a>
## v0.3.1
- Added a statement timeout to the pool to prevent long-running queries.

<a id="2025-08-21"></a>
## v0.3.0
- Set a default 15-minute statement timeout and implemented monitoring for long-running queries to ensure system efficiency.
- Stop propagating run configurable values to the thread configuration, because this can cause issues on subsequent runs if you are specifying a checkpoint_id. This is a **slight breaking change** in behavior, since the thread value will no longer automatically reflect the unioned configuration of the most recent run. We believe this behavior is more intuitive, however.
- Enhanced compatibility with older worker versions by handling event data in channel names within ops.py.

<a id="2025-08-20"></a>
## v0.2.137
- Fixed an unbound local error and improved logging for thread interruptions or errors, along with type updates.

<a id="2025-08-20"></a>
## v0.2.136
- Added enhanced logging to aid in debugging metaview issues.
- Upgraded executor and runtime to the latest version for improved performance and stability.

<a id="2025-08-19"></a>
## v0.2.135
- Ensured async coroutines are properly awaited to prevent potential runtime errors.

<a id="2025-08-18"></a>
## v0.2.134
- Enhanced search functionality to improve performance by allowing users to select specific columns for query results.

<a id="2025-08-18"></a>
## v0.2.133
- Added count endpoints for crons, threads, and assistants to enhance data tracking (#1132).
- Improved SSH functionality for better reliability and stability.
- Updated @langchain/langgraph-api to version 0.0.59 to fix an invalid state schema issue.

<a id="2025-08-15"></a>
## v0.2.132
- Added Go language images to enhance project compatibility and functionality.
- Printed internal PIDs for JS workers to facilitate process inspection via SIGUSR1 signal.
- Resolved a `run_pkey` error that occurred when attempting to insert duplicate runs.
- Added `ty run` command and switched to using uuid7 for generating run IDs.
- Implemented the initial Golang runtime to expand language support.

<a id="2025-08-14"></a>
## v0.2.131
- Added support for `object agent spec` with descriptions in JS.

<a id="2025-08-13"></a>
## v0.2.130
- Added a feature flag (FF_RICH_THREADS=false) to disable thread updates on run creation, reducing lock contention and simplifying thread status handling.
- Utilized existing connections for `aput` and `apwrite` operations to improve performance.
- Improved error handling for decoding issues to enhance data processing reliability.
- Excluded headers from logs to improve security while maintaining runtime functionality.
- Fixed an error that prevented mapping slots to a single node.
- Added debug logs to track node execution in JS deployments for improved issue diagnosis.
- Changed the default multitask strategy to enqueue, improving throughput by eliminating the need to fetch inflight runs during new run insertions.
- Optimized database operations for `Runs.next` and `Runs.sweep` to reduce redundant queries and improve efficiency.
- Improved run creation speed by skipping unnecessary inflight runs queries.

<a id="2025-08-11"></a>
## v0.2.129
- Stopped passing internal LGP fields to context to prevent breaking type checks.
- Exposed content-location headers to ensure correct resumability behavior in the API.

<a id="2025-08-08"></a>
## v0.2.128
- Ensured synchronized updates between `configurable` and `context` in assistants, preventing setup errors and supporting smoother version transitions.

<a id="2025-08-08"></a>
## v0.2.127
- Excluded unrequested stream modes from the resumable stream to optimize functionality.

<a id="2025-08-08"></a>
## v0.2.126
- Made access logger headers configurable to enhance logging flexibility.
- Debounced the Runs.stats function to reduce the frequency of expensive calls and improve performance.
- Introduced debouncing for sweepers to enhance performance and efficiency (#1147).
- Acquired a lock for TTL sweeping to prevent database spamming during scale-out operations.

<a id="2025-08-06"></a>
## v0.2.125
- Updated tracing context replicas to use the new format, ensuring compatibility.

<a id="2025-08-06"></a>
## v0.2.123
- Added an entrypoint to the queue replica for improved deployment management.

<a id="2025-08-06"></a>
## v0.2.122
- Utilized persisted interrupt status in `join` to ensure correct handling of user's interrupt state after completion.

<a id="2025-08-06"></a>
## v0.2.121
- Consolidated events to a single channel to prevent race conditions and optimize startup performance.
- Ensured custom lifespans are invoked on queue workers for proper setup, and added tests.

<a id="2025-08-04"></a>
## v0.2.120
- Restored the original streaming behavior of runs, ensuring consistent inclusion of interrupt events based on `stream_mode` settings.
- Optimized `Runs.next` query to reduce average execution time from ~14.43ms to ~2.42ms, improving performance.
- Added support for stream mode "tasks" and "checkpoints", normalized the UI namespace, and upgraded `@langchain/langgraph-api` for enhanced functionality.

<a id="2025-07-31"></a>
## v0.2.117
- Added a composite index on threads for faster searches with owner-based authentication and updated the default sort order to `updated_at` for improved query performance.

<a id="2025-07-31"></a>
## v0.2.116
- Reduced the default number of history checkpoints from 10 to 1 to optimize performance.

<a id="2025-07-31"></a>
## v0.2.115
- Optimized cache re-use to enhance application performance and efficiency.

<a id="2025-07-30"></a>
## v0.2.113
- Improved thread search pagination by updating response headers with `X-Pagination-Total` and `X-Pagination-Next` for better navigation.

<a id="2025-07-30"></a>
## v0.2.112
- Ensured sync logging methods are awaited and added a linter to prevent future occurrences.
- Fixed an issue where JavaScript tasks were not being populated correctly for JS graphs.

<a id="2025-07-29"></a>
## v0.2.111
- Fixed JS graph streaming failure by starting the heartbeat as soon as the connection opens.

<a id="2025-07-29"></a>
## v0.2.110
- Added interrupts as default values for join operations while preserving stream behavior.

<a id="2025-07-28"></a>
## v0.2.109
- Fixed an issue where config schema was missing when `config_type` was not set, ensuring more reliable configurations.

<a id="2025-07-28"></a>
## v0.2.108
- Prepared for LangGraph v0.6 compatibility with new context API support and bug fixes.

<a id="2025-07-27"></a>
## v0.2.107
- Implemented caching for authentication processes to enhance performance and efficiency.
- Optimized database performance by merging count and select queries.

<a id="2025-07-27"></a>
## v0.2.106
- Made log streams resumable, enhancing reliability and improving user experience when reconnecting.

<a id="2025-07-27"></a>
## v0.2.105
- Added a heapdump endpoint to save memory heap information to a file.

<a id="2025-07-25"></a>
## v0.2.103
- Used the correct metadata endpoint to resolve issues with data retrieval.

<a id="2025-07-24"></a>
## v0.2.102
- Captured interrupt events in the wait method to preserve previous behavior from langgraph 0.5.0.
- Added support for SDK structlog in the JavaScript environment for enhanced logging capabilities.

<a id="2025-07-24"></a>
## v0.2.101
- Corrected the metadata endpoint for self-hosted deployments.

<a id="2025-07-22"></a>
## v0.2.99
- Improved license check by adding an in-memory cache and handling Redis connection errors more effectively.
- Reloaded assistants to preserve manually created ones while discarding those removed from the configuration file.
- Reverted changes to ensure the UI namespace for gen UI is a valid JavaScript property name.
- Ensured that the UI namespace for generated UI is a valid JavaScript property name, improving API compliance.
- Enhanced error handling to return a 422 status code for unprocessable entity requests.

<a id="2025-07-19"></a>
## v0.2.98
- Added context to langgraph nodes to improve log filtering and trace visibility.

<a id="2025-07-19"></a>
## v0.2.97
- Improved interoperability with the ckpt ingestion worker on the main loop to prevent task scheduling issues.
- Delayed queue worker startup until after migrations are completed to prevent premature execution.
- Enhanced thread state error handling by adding specific metadata and improved response codes for better clarity when state updates fail during creation.
- Exposed the interrupt ID when retrieving the thread state to improve API transparency.

<a id="2025-07-17"></a>
## v0.2.96

* Added a fallback mechanism for configurable header patterns to handle exclude/include settings more effectively.

<a id="2025-07-17"></a>
## v0.2.95

* Avoided setting the future if it is already done to prevent redundant operations.
* Resolved compatibility errors in CI by switching from `typing.TypedDict` to `typing_extensions.TypedDict` for Python versions below 3.12.

<a id="2025-07-16"></a>
## v0.2.94

* Improved performance by omitting pending sends for langgraph versions 0.5 and above.
* Improved server startup logs to provide clearer warnings when the DD_API_KEY environment variable is set.

<a id="2025-07-16"></a>
## v0.2.93

* Removed the GIN index for run metadata to improve performance.

<a id="2025-07-16"></a>
## v0.2.92

* Enabled copying functionality for blobs and checkpoints, improving data management flexibility.

<a id="2025-07-16"></a>
## v0.2.91

* Reduced writes to the `checkpoint_blobs` table by inlining small values (null, numeric, str, etc.). This means we don't need to store extra values for channels that haven't been updated.

<a id="2025-07-16"></a>
## v0.2.90

* Improve checkpoint writes via node-local background queueing.

<a id="2025-07-15"></a>
## v0.2.89

* Decoupled checkpoint writing from thread/run state by removing foreign keys and updated logger to prevent timeout-related failures.

<a id="2025-07-14"></a>
## v0.2.88

* Removed the foreign key constraint for `thread` in the `run` table to simplify database schema.

<a id="2025-07-14"></a>
## v0.2.87

* Added more detailed logs for Redis worker signaling to improve debugging.

<a id="2025-07-11"></a>
## v0.2.86

* Honored tool descriptions in the `/mcp` endpoint to align with expected functionality.

<a id="2025-07-10"></a>
## v0.2.85

* Added support for the `on_disconnect` field to `runs/wait` and included disconnect logs for better debugging.

<a id="2025-07-09"></a>
## v0.2.84

* Removed unnecessary status updates to streamline thread handling and updated version to 0.2.84.

<a id="2025-07-09"></a>
## v0.2.83

* Reduced the default time-to-live for resumable streams to 2 minutes.
* Enhanced data submission logic to send data to both Beacon and LangSmith instance based on license configuration.
* Enabled submission of self-hosted data to a LangSmith instance when the endpoint is configured.

<a id="2025-07-03"></a>
## v0.2.82

* Addressed a race condition in background runs by implementing a lock using join, ensuring reliable execution across CTEs.

<a id="2025-07-03"></a>
## v0.2.81

* Optimized run streams by reducing initial wait time to improve responsiveness for older or non-existent runs.

<a id="2025-07-03"></a>
## v0.2.80

* Corrected parameter passing in the `logger.ainfo()` API call to resolve a TypeError.

<a id="2025-07-02"></a>
## v0.2.79

* Fixed a JsonDecodeError in checkpointing with remote graph by correcting JSON serialization to handle trailing slashes properly.
* Introduced a configuration flag to disable webhooks globally across all routes.

<a id="2025-07-02"></a>
## v0.2.78

* Added timeout retries to webhook calls to improve reliability.
* Added HTTP request metrics, including a request count and latency histogram, for enhanced monitoring capabilities.

<a id="2025-07-02"></a>
## v0.2.77

* Added HTTP metrics to improve performance monitoring.
* Changed the Redis cache delimiter to reduce conflicts with subgraph message names and updated caching behavior.

<a id="2025-07-01"></a>
## v0.2.76

* Updated Redis cache delimiter to prevent conflicts with subgraph messages.

<a id="2025-06-30"></a>
## v0.2.74

* Scheduled webhooks in an isolated loop to ensure thread-safe operations and prevent errors with PYTHONASYNCIODEBUG=1.

<a id="2025-06-27"></a>
## v0.2.73

* Fixed an infinite frame loop issue and removed the dict_parser due to structlog's unexpected behavior.
* Throw a 409 error on deadlock occurrence during run cancellations to handle lock conflicts gracefully.

<a id="2025-06-27"></a>
## v0.2.72

* Ensured compatibility with future langgraph versions.
* Implemented a 409 response status to handle deadlock issues during cancellation.

<a id="2025-06-26"></a>
## v0.2.71

* Improved logging for better clarity and detail regarding log types.

<a id="2025-06-26"></a>
## v0.2.70

* Improved error handling to better distinguish and log TimeoutErrors caused by users from internal run timeouts.

<a id="2025-06-26"></a>
## v0.2.69

* Added sorting and pagination to the crons API and updated schema definitions for improved accuracy.

<a id="2025-06-26"></a>
## v0.2.66

* Fixed a 404 error when creating multiple runs with the same thread_id using `on_not_exist="create"`.

<a id="2025-06-25"></a>
## v0.2.65

* Ensured that only fields from `assistant_versions` are returned when necessary.
* Ensured consistent data types for in-memory and PostgreSQL users, improving internal authentication handling.

<a id="2025-06-24"></a>
## v0.2.64

* Added descriptions to version entries for better clarity.

<a id="2025-06-23"></a>
## v0.2.62

* Improved user handling for custom authentication in the JS Studio.
* Added Prometheus-format run statistics to the metrics endpoint for better monitoring.
* Added run statistics in Prometheus format to the metrics endpoint.

<a id="2025-06-20"></a>
## v0.2.61

* Set a maximum idle time for Redis connections to prevent unnecessary open connections.

<a id="2025-06-20"></a>
## v0.2.60

* Enhanced error logging to include traceback details for dictionary operations.
* Added a `/metrics` endpoint to expose queue worker metrics for monitoring.

<a id="2025-06-18"></a>
## v0.2.57

* Removed CancelledError from retriable exceptions to allow local interrupts while maintaining retriability for workers.
* Introduced middleware to gracefully shut down the server after completing in-flight requests upon receiving a SIGINT.
* Reduced metadata stored in checkpoint to only include necessary information.
* Improved error handling in join runs to return error details when present.

<a id="2025-06-17"></a>
## v0.2.56

* Improved application stability by adding a handler for SIGTERM signals.

<a id="2025-06-17"></a>
## v0.2.55

* Improved the handling of cancellations in the queue entrypoint.
* Improved cancellation handling in the queue entry point.

<a id="2025-06-16"></a>
## v0.2.54

* Enhanced error message for LuaLock timeout during license validation.
* Fixed the $contains filter in custom auth by requiring an explicit ::text cast and updated tests accordingly.
* Ensured project and tenant IDs are formatted as UUIDs for consistency.

<a id="2025-06-13"></a>
## v0.2.53

* Resolved a timing issue to ensure the queue starts only after the graph is registered.
* Improved performance by setting thread and run status in a single query and enhanced error handling during checkpoint writes.
* Reduced the default background grace period to 3 minutes.

<a id="2025-06-12"></a>
## v0.2.52

* Now logging expected graphs when one is omitted to improve traceability.
* Implemented a time-to-live (TTL) feature for resumable streams.
* Improved query efficiency and consistency by adding a unique index and optimizing row locking.

<a id="2025-06-12"></a>
## v0.2.51

* Handled `CancelledError` by marking tasks as ready to retry, improving error management in worker processes.
* Added LG API version and request ID to metadata and logs for better tracking.
* Added LG API version and request ID to metadata and logs to improve traceability.
* Improved database performance by creating indexes concurrently.
* Ensured postgres write is committed only after the Redis running marker is set to prevent race conditions.
* Enhanced query efficiency and reliability by adding a unique index on thread_id/running, optimizing row locks, and ensuring deterministic run selection.
* Resolved a race condition by ensuring Postgres updates only occur after the Redis running marker is set.

<a id="2025-06-07"></a>
## v0.2.46

* Introduced a new connection for each operation while preserving transaction characteristics in Threads state `update()` and `bulk()` commands.

<a id="2025-06-05"></a>
## v0.2.45

* Enhanced streaming feature by incorporating tracing contexts.
* Removed an unnecessary query from the Crons.search function.
* Resolved connection reuse issue when scheduling next run for multiple cron jobs.
* Removed an unnecessary query in the Crons.search function to improve efficiency.
* Resolved an issue with scheduling the next cron run by improving connection reuse.

<a id="2025-06-04"></a>
## v0.2.44

* Enhanced the worker logic to exit the pipeline before continuing when the Redis message limit is reached.
* Introduced a ceiling for Redis message size with an option to skip messages larger than 128 MB for improved performance.
* Ensured the pipeline always closes properly to prevent resource leaks.

<a id="2025-06-04"></a>
## v0.2.43

* Improved performance by omitting logs in metadata calls and ensuring output schema compliance in value streaming.
* Ensured the connection is properly closed after use.
* Aligned output format to strictly adhere to the specified schema.
* Stopped sending internal logs in metadata requests to improve privacy.

<a id="2025-06-04"></a>
## v0.2.42

* Added timestamps to track the start and end of a request's run.
* Added tracer information to the configuration settings.
* Added support for streaming with tracing contexts.

<a id="2025-06-03"></a>
## v0.2.41

* Added locking mechanism to prevent errors in pipelined executions.
